package cn.itcast.nems.studentrecord.dao.dataobject;

import lombok.Getter;
import lombok.Setter;

import java.io.Serializable;
import java.time.LocalDate;

/**
 * <p>
 * 退学凭单-头
 * </p>
 *
 * @author 陈早庆
 * @since 2023-12-07
 */
@Getter
@Setter
public class JournalDropoutDO implements Serializable {

    private static final long serialVersionUID = 1L;
    private String id;
    /**
     * 退学的学籍ID
     */
    private String studentRecordId;
    /**
     * 学员id
     */
    private String studentId;
    /**
     * 学员姓名
     */
    private String studentName;
    /**
     * 学号
     */
    private String studentNo;

    /**
     * 业务实际办理日期;退学日期。
     */
    private String bizDate;

    /**
     * 退费类型;枚举值：退学不退费｜、退学退费｜
     * RefundTypeEnum
     */
    private String type;

    /**
     * 退学的班级ID
     */
    private Integer clazzId;

    /**
     * 退学的班级名称
     */
    private String clazzName;

    /**
     * 退学原因CODE;来自字典表
     */
    private String reasonCode;

    /**
     * 退学原因说明;来自字典表
     */
    private String reasonDescription;

    /**
     * 应服务天数
     */
    private Integer serviceDays;

    /**
     * 实际服务天数
     */
    private Integer settlementDays;
    /**
     * 应付金额;应付金额=原金额-优惠金额。所有阶段应付金额的合计！单位：分
     */
    private String amountDue;
    /**
     * 实际应付金额;来自于学籍
     */
    private String actualAmountDue;

    /**
     * 结算金额/课耗
     */
    private String settlementAmount;

    /**
     * 已付金额;来自于学籍
     */
    private String paidAmount;

    /**
     * 转班转入金额;来自于学籍。非转班该字段金额为零
     */
    private String transferFromAmount;

    /**
     * 退费金额（过往退费金额）;来自于学籍，不算本次退费金额。
     */
    private String refundAmount;

    /**
     * 结算余额/剩余金额;结算余额 = 已付金额 + 转班转入金额 - 退费金额（过往退费） - 结算金额；注：永远不能为负。当前未考虑出班后再退费的情况，如果出班后需要再退费，此公式需要再考虑转班转出的金额！
     */
    private String settlementBalanceAmount;

    /**
     * 本次退费金额
     */
    private String amount;

    /**
     * 状态;枚举值：草稿｜DRAFT、待审批｜PENDING、审批中｜APPROVING、审批未通过｜REJECTED、已完成｜FINISHED
     */
    private String state;

    /**
     * 备注
     */
    private String remark;

    /**
     * 退费凭单ID;只有在“退学退费”时才会产生
     */
    private String journalRefundId;

    /**
     * 创建人
     */
    private String createdBy;
    private String createdName;
    private String createdByName;

    /**
     * 创建时间
     */
    private String createdDatetime;

    private String formId;

    /**
     * 是否需要当前查看人审批
     */
    private Boolean needApproval;
    /**
     * 是否特殊退费：0否、1是
     */
    private Boolean specialFlag;
    /**
     * 是否已开发票；枚举值：未开发票｜0、已开票｜1
     */
    private Boolean invoiceFlag;
    /**
     * 是否贷款学员；枚举值：非贷款学员｜0、贷款学员｜1
     */
    private Boolean loanFlag;
    /**
     * 所属公司编码;财务上退费资金所属的公司。
     */
    private String companyCode;
    /**
     * 所属公司名称；财务上退费资金所属的公司。
     */
    private String companyName;
    /**
     * 开班日期
     */
    private LocalDate startDate;

    /**
     * 进班日期
     */
    private LocalDate inDate;
    /**
     * category：1：审批）2：知会）
     */
    private Integer category;
    /**
     * 班级预计结课时间
     */
    private LocalDate predictionGraduationDate;

}
